package net.cloudcodex.shared.dto.home;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import net.cloudcodex.server.data.home.CampaignPublicSummary;
import net.cloudcodex.shared.dto.NotificationDTO;

/**
 * A playable character description, for home page.
 * 
 * @author Thomas
 */
public class CharacterSummaryDTO implements Serializable {

	/**
	 * Id of the character.
	 */
	private long id;
	
	/**
	 * Name of the character.
	 */
	private String name;
	
	/**
	 * Campaign associated to the character.
	 */
	private CampaignPublicSummaryDTO campaign;
	
	/**
	 * Public description of the character.
	 */
	private String description;

	/**
	 * Icon URL.
	 */
	private String icon;

	/**
	 * Notifications for the character 
	 * 	(see {@link CampaignPublicSummary#getUserNotifications()}.
	 */
	private List<NotificationDTO> notifications;

	/**
	 * Character creation date.
	 */
	private Date creationDate;
	
	/**
	 * The character may be dead.
	 */
	private boolean dead;

	/**
	 * The character may be locked by GM.
	 */
	private boolean locked;
	
	/**
	 * @return the id
	 */
	public long getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(long id) {
		this.id = id;
	}

	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @return the campaign
	 */
	public CampaignPublicSummaryDTO getCampaign() {
		return campaign;
	}

	/**
	 * @param campaign the campaign to set
	 */
	public void setCampaign(CampaignPublicSummaryDTO campaign) {
		this.campaign = campaign;
	}

	/**
	 * @return the description
	 */
	public String getDescription() {
		return description;
	}

	/**
	 * @param description the description to set
	 */
	public void setDescription(String description) {
		this.description = description;
	}

	/**
	 * @return the icon
	 */
	public String getIcon() {
		return icon;
	}

	/**
	 * @param icon the icon to set
	 */
	public void setIcon(String icon) {
		this.icon = icon;
	}

	/**
	 * @return the notifications
	 */
	public List<NotificationDTO> getNotifications() {
		return notifications;
	}

	/**
	 * @param notifications the notifications to set
	 */
	public void setNotifications(List<NotificationDTO> notifications) {
		this.notifications = notifications;
	}

	public Date getCreationDate() {
		return creationDate;
	}

	public void setCreationDate(Date creationDate) {
		this.creationDate = creationDate;
	}

	public boolean isDead() {
		return dead;
	}

	public void setDead(boolean dead) {
		this.dead = dead;
	}

	public boolean isLocked() {
		return locked;
	}

	public void setLocked(boolean locked) {
		this.locked = locked;
	}
}
